home *** CD-ROM | disk | FTP | other *** search
- /***********************************************/
- /* Author: Raymond Miville-Deschênes */
- /* Module: SCREEN PROTECT, Version 1.0 */
- /* Version: May 21, 1986 */
- /***********************************************/
-
- extern long bios();
- extern long xbios();
- extern long gemdos();
-
- typedef struct object
- {
- int ob_next;
- int ob_head;
- int ob_tail;
- unsigned int ob_type;
- unsigned int ob_flags;
- unsigned int ob_state;
- long ob_spec;
- int ob_x;
- int ob_y;
- int ob_width;
- int ob_height;
- } OBJECT;
-
- typedef struct text_edinfo
- {
- long te_ptext;
- long te_ptmplt;
- long te_pvalid;
- int te_font;
- int te_junk1;
- int te_just;
- int te_color;
- int te_junk2;
- int te_thickness;
- int te_txtlen;
- int te_tmplen;
- } TEDINFO;
-
- typedef struct bit_block
- {
- long bi_pdata;
- int bi_wb;
- int bi_hl;
- int bi_x;
- int bi_y;
- int bi_color;
- } BITBLK;
-
- char *rs_strings[] = {
- "Screen Protect",
- "",
- "",
- "Authors",
- "",
- "",
- "---------",
- "",
- "",
- "Raymond Miville-Deschênes",
- "",
- "",
- "Alain Plouffe",
- "",
- "",
- "OK",
- "CANCEL",
- "F.A.S.T.E.R. Montreal",
- "",
- "",
- "Federated Atari ST Enthusiasts Regroupin",
- "",
- "",
- "g",
- "",
- "",
- "Fédération Atari ST des Enthousiastes",
- "",
- "",
- " Regroupés",
- "",
- "",
- "BBS: (514) 489-0680",
- "",
- "",
- "Hit any key to return to Desktop",
- "",
- "",
- "Tapez une clé pour revenir au Bureau",
- "",
- ""};
-
- int IMAG0[] = {
- 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x3FFF, 0xFFFF,
- 0xFFFF, 0xFFFF, 0xFFFF, 0xC000,
- 0x6000, 0x0, 0x0, 0x0,
- 0x0, 0x6000, 0x5FF5, 0x5555,
- 0x5555, 0x5555, 0x5555, 0xA000,
- 0x5FEA, 0xAAAA, 0xAAAA, 0xAAAA,
- 0xAAAB, 0xA000, 0x5FD5, 0x5555,
- 0x5555, 0x5555, 0x5557, 0xA000,
- 0x5FAA, 0xAAAA, 0xAAAA, 0xAAAA,
- 0xAAAF, 0xA000, 0x5F55, 0x5555,
- 0x5555, 0x5555, 0x555F, 0xA000,
- 0x5EAA, 0xAAAA, 0xAAAA, 0xAAAA,
- 0xAABF, 0xB000, 0x5D55, 0x5555,
- 0x5555, 0x5555, 0x557F, 0x9800,
- 0x5800, 0x0, 0x0, 0x0,
- 0xFF, 0x8F80, 0x5FFF, 0xFFFF,
- 0xFFFF, 0xFFFF, 0xFFFF, 0x98C0,
- 0x5FFF, 0xFFFF, 0xFFFF, 0xFFFF,
- 0xFFFF, 0xB040, 0x6000, 0x0,
- 0x0, 0x0, 0x0, 0x6040,
- 0x5FFF, 0xFFFF, 0xFFFF, 0xFFFF,
- 0xFFFF, 0xA040, 0x5FFF, 0xFFFF,
- 0xFFFF, 0xFFFE, 0x0, 0xA060,
- 0x5FFF, 0xFFFF, 0xFFFF, 0xFFFD,
- 0x4315, 0xA020, 0x5E00, 0x0,
- 0x0, 0x38, 0x3, 0xA020,
- 0x5DEF, 0x7BDE, 0xF7BD, 0xEF7F,
- 0xFFFF, 0xA020, 0x5AD6, 0xB5AD,
- 0x6B5A, 0xD6FF, 0xFFFF, 0xA1F0,
- 0x57BD, 0xEF7B, 0xDEF7, 0xBDFF,
- 0xFFFF, 0xA330, 0x6000, 0x0,
- 0x0, 0x0, 0x0, 0x6210,
- 0x5FFF, 0xFFFF, 0xFFFF, 0xFFFF,
- 0xFFFF, 0xA338, 0x5FFF, 0xFFFF,
- 0xFFFF, 0xFFFF, 0xFFFF, 0xA1E8,
- 0x5800, 0x0, 0x0, 0xC00,
- 0xC001, 0xA008, 0x5B6D, 0xB6DB,
- 0x6DB6, 0xEDEE, 0xDB6D, 0xA008,
- 0x5B6D, 0xB6DB, 0x6DB6, 0xEDEE,
- 0xDB6D, 0xA008, 0x5800, 0x0,
- 0x0, 0xC00, 0xC001, 0xA018,
- 0x5BB6, 0xDB6D, 0xB6DB, 0x6DB6,
- 0xDB6D, 0xA030, 0x5BB6, 0xDB6D,
- 0xB6DB, 0x6DB6, 0xDB6D, 0xA060,
- 0x5800, 0x0, 0x3, 0xC00,
- 0xC001, 0xA040, 0x5BDB, 0x6DB6,
- 0xDB6F, 0x6DB6, 0xDB6D, 0xA040,
- 0x5BDB, 0x6DB6, 0xDB6F, 0x6DB6,
- 0xDB6D, 0xA0E0, 0x5800, 0x0,
- 0x0, 0xC00, 0xC001, 0xA1B0,
- 0x5BED, 0xB6DB, 0x6DB8, 0xC00,
- 0xDB6D, 0xAF5E, 0x5BED, 0xB6DB,
- 0x6DBB, 0xFFFF, 0xDB6D, 0xA802,
- 0x5800, 0x0, 0x3, 0xFFFF,
- 0xC00D, 0xABBA, 0x5877, 0xFFFF,
- 0xFEE3, 0xFFFF, 0xDF6D, 0xABBA,
- 0x5F77, 0xFFFF, 0xFEEF, 0xFFFF,
- 0xDF6D, 0xABBA, 0x5F00, 0x0,
- 0xF, 0xFFFF, 0xC001, 0xA802,
- 0x5F00, 0x0, 0xF, 0xFFFF,
- 0xC001, 0xABFA, 0x51FF, 0xFFFF,
- 0xFFFF, 0xFFFF, 0xFFFF, 0xABFA,
- 0x5FFF, 0xFFFF, 0xFFFF, 0xFFFF,
- 0xFFFF, 0xABFA, 0x4000, 0x0,
- 0x0, 0x0, 0x0, 0x2BFA,
- 0x6000, 0x0, 0x0, 0x0,
- 0x0, 0x6BBA, 0x3FFF, 0xFFFF,
- 0xFFFF, 0xFFFF, 0xFFFF, 0xCBBA,
- 0x0, 0x0, 0x0, 0x0,
- 0x0, 0xB5A, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x8A2,
- 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x802, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0xFFE,
- 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0,
- 0x0, 0x0, 0x0, 0x0};
-
- BITBLK rs_bitblk[] = {
- 0L, 12, 56, 0, 0, 1};
-
- TEDINFO rs_tedinfo[] = {
- 0L, 1L, 2L, 3, 6, 0, 0x1100, 0x0, -1, 15,1,
- 3L, 4L, 5L, 3, 6, 0, 0x1100, 0x0, -1, 8,1,
- 6L, 7L, 8L, 3, 6, 0, 0x1100, 0x0, -1, 10,1,
- 9L, 10L, 11L, 3, 6, 0, 0x1100, 0x0, -1, 26,1,
- 12L, 13L, 14L, 3, 6, 0, 0x1100, 0x0, -1, 14,1,
- 17L, 18L, 19L, 3, 6, 0, 0x1300, 0x0, -1, 23,1,
- 20L, 21L, 22L, 3, 6, 0, 0x1300, 0x0, -1, 41,1,
- 23L, 24L, 25L, 3, 6, 0, 0x1300, 0x0, -1, 2,1,
- 26L, 27L, 28L, 3, 6, 0, 0x1300, 0x0, -1, 38,1,
- 29L, 30L, 31L, 3, 6, 0, 0x1300, 0x0, -1, 11,1,
- 32L, 33L, 34L, 3, 6, 0, 0x1300, 0x0, -1, 20,1,
- 35L, 36L, 37L, 3, 6, 0, 0x1200, 0x0, -1, 30,1,
- 38L, 39L, 40L, 3, 6, 0, 0x1200, 0x0, -1, 38,1};
-
- OBJECT rs_object[] = {
- -1, 1, 16, 20, 0x0, 0x10, 0x21101L, 0,0, 53,17,
- 2, -1, -1, 21, 0x0, 0x0, 0x0L, 3,1, 14,1,
- 3, -1, -1, 21, 0x0, 0x0, 0x1L, 29,1, 7,1,
- 4, -1, -1, 21, 0x0, 0x8, 0x2L, 28,2, 9,1,
- 5, -1, -1, 21, 0x0, 0x0, 0x3L, 20,3, 25,1,
- 6, -1, -1, 23, 0x0, 0x20, 0x0L, 3,3, 12,2051,
- 7, -1, -1, 21, 0x0, 0x0, 0x4L, 26,4, 13,1,
- 8, -1, -1, 26, 0x7, 0x0, 0xFL, 23,6, 8,1,
- 9, -1, -1, 26, 0x5, 0x0, 0x10L, 35,6, 8,1,
- 10, -1, -1, 21, 0x0, 0x0, 0x5L, 16,9, 22,1,
- 11, -1, -1, 21, 0x0, 0x0, 0x6L, 6,10, 40,1,
- 12, -1, -1, 21, 0x0, 0x0, 0x7L, 46,10, 1,1,
- 13, -1, -1, 21, 0x0, 0x0, 0x8L, 3,11, 37,1,
- 14, -1, -1, 21, 0x0, 0x0, 0x9L, 40,11, 10,1,
- 15, -1, -1, 21, 0x0, 0x0, 0xAL, 18,12, 19,1,
- 16, -1, -1, 21, 0x0, 0x0, 0xBL, 13,14, 29,1,
- 0, -1, -1, 21, 0x20, 0x0, 0xCL, 9,15, 37,1};
-
- long rs_trindex[] = {
- 0L};
-
- struct foobar {
- int dummy;
- int *image;
- } rs_imdope[] = {
- 0, &IMAG0[0]};
-
-
- int contrl[11];
- int intin[80];
- int ptsin[256];
- int intout[45];
- int ptsout[12];
- int gl_wchar;
- int gl_hchar;
- int gl_wbox;
- int gl_hbox;
- int vdi_handle;
- int work_out[57];
- int work_in[11];
- int gl_rmsg[8];
- int gl_apid;
- int ev_which;
- int menu_id;
- long buf_alloc, buf_read;
- long logadr, physadr;
- long tree;
- int res, ret, i;
- int rs_objnum[1+1];
- int color;
-
- fix_trindex()
- {
- int test, ii;
-
- for (ii = 0; ii < 1; ii++)
- {
- test = (int) rs_trindex[ii];
- rs_objnum[ii] = test;
- rs_trindex[ii] = (char *) &rs_object[test];
- }
- rs_objnum[ii] = 17;
- }
-
- fix_objects()
- {
- int test, ii;
-
- for (ii = 0; ii < 17; ii++)
- {
- test = (int) rs_object[ii].ob_spec;
- switch (rs_object[ii].ob_type) {
- case 32:
- case 28:
- case 26:
- fix_str(&rs_object[ii].ob_spec);
- break;
- case 21:
- case 22:
- case 29:
- case 30:
- rs_object[ii].ob_spec
- = (char *) &rs_tedinfo[test];
- break;
- case 23:
- rs_object[ii].ob_spec
- = (char *) &rs_bitblk[test];
- break;
- }
- }
- }
-
- fix_tedinfo()
- {
- int ii;
-
- for (ii = 0; ii < 13; ii++)
- {
- fix_str(&rs_tedinfo[ii].te_ptext);
- fix_str(&rs_tedinfo[ii].te_ptmplt);
- fix_str(&rs_tedinfo[ii].te_pvalid);
- }
- }
-
- fix_str(where)
- long *where;
- {
- *where = (long)(rs_strings[(int) *where]);
- }
-
- fix_bitblk()
- {
- int ii;
-
- for (ii = 0; ii < 1; ii++) fix_img(&rs_bitblk[ii].bi_pdata);
- }
-
- fix_img(where)
- long *where;
- {
- *where = (long)( (char *) rs_imdope[(int) *where].image);
- }
-
- fix_xywh()
- {
- int i, j, k;
-
- for (i=0; i<1; i++)
- {
- k = rs_objnum[i+1] - rs_objnum[i];
- for (j=0; j<k; j++) rsrc_obfix(rs_trindex[i], j);
- }
- }
-
- screen_protect()
- {
- graf_mouse(256, 0x0L);
- logadr = xbios(3);
- physadr = xbios(2);
- res = (int)xbios(4);
- color = xbios(7,0,0);
- buf_alloc = gemdos(0x48,32255L);
- buf_read = buf_alloc/256;
- buf_read = (buf_read + (buf_read * 256 != buf_alloc)) * 256;
- xbios(5,buf_read,buf_read,res);
- while(!gemdos(0x6,0xff));
- xbios(7,0,color);
- xbios(5,logadr,physadr,-1);
- gemdos(0x49,buf_alloc);
- graf_mouse(257, 0x0L);
- }
-
- main()
- {
- int xdial, ydial, wdial, hdial, exitobj, state;
-
- appl_init();
- vdi_handle = graf_handle(&gl_wchar,&gl_hchar,&gl_wbox,&gl_hbox);
- menu_id = menu_register(gl_apid," Screen Protect ");
-
- fix_trindex();
- fix_objects();
- fix_tedinfo();
- fix_bitblk();
- fix_xywh();
-
- for(;;)
- {
- ev_which = evnt_mesag(gl_rmsg);
- if (gl_rmsg[0] == 40 && gl_rmsg[4] == menu_id)
- {
- for (i=0; i<10; i++) work_in[i]=1;
- work_in[10]=2;
- v_opnvwk(work_in,&vdi_handle,work_out);
-
- tree = rs_trindex[0];
- form_center(tree, &xdial, &ydial, &wdial, &hdial);
- form_dial(0,0,0,0,0, xdial, ydial, wdial, hdial);
- form_dial(1,0,0,0,0, xdial, ydial, wdial, hdial);
-
- objc_draw(tree, 0, 8, xdial, ydial, wdial, hdial);
- exitobj = form_do(tree, 0);
- state = ((int) *((int *)((tree + (exitobj)
- * sizeof(OBJECT) + 10))));
- (*((int *)((tree + (exitobj) * sizeof(OBJECT)
- + 10))) = state & ~0x1);
-
- form_dial(2,0,0,0,0, xdial, ydial, wdial, hdial);
- form_dial(3,0,0,0,0, xdial, ydial, wdial, hdial);
-
- if (exitobj == 7) screen_protect();
- v_clsvwk(vdi_handle);
- }
- }
- }
-
-